// 发布订阅，先订阅，才能发布，两者没有关系
const eventObj = {
  arr: [], // 相当于中介，存放订阅的事件
  on(fn) {
    // 订阅
    this.arr.push(fn);
  },
  emit() {
    // 发布
    this.arr.forEach((fn) => fn());
  },
};

/*eventObj.on(function () {
  console.log(1);
});
eventObj.on(function () {
  console.log(2);
});

eventObj.emit();*/

const eventObj = {
  arr: [], // 相当于中介，存放订阅的事件
  on(fn) {
    // 订阅
    this.arr.push(fn);
  },
  emit() {
    // 发布
    this.arr.forEach((fn) => fn());
  },
};

let obj = {};
// 先订阅，把函数存起来
eventObj.on(function () {
  if(Object.keys(obj).length === 2) {
    console.log(obj);
  }
  console.log(1);
});

setTimeout(function () {
  obj.name = '海苔';
  // 发布，触发调用订阅的函数
  eventObj.emit();
}, 1000);

setTimeout(function () {
  obj.age = 20;
  // 发布，触发调用订阅的函数
  eventObj.emit();
}, 1000);